"Igor" pointed out that CURLOPT_COOKIELIST set to "ALL" leaked memory, and so did "SESS". Fixed now. 
diff --git a/CHANGES b/CHANGES index 51c0778..fb29903 100644 --- a/CHANGES +++ b/CHANGES 
@@ -6,9 +6,16 @@    Changelog   +<<<<<<< CHANGES +Daniel S (23 Jan 2008) +- "Igor" pointed out that CURLOPT_COOKIELIST set to "ALL" leaked memory, and so + did "SESS". Fixed now. + +=======  Yang Tse (22 Jan 2008)  - Check poll.h at configuration time, and use it when sys/poll.h unavailable   +>>>>>>> 1.1234  Daniel S (22 Jan 2008)  - Dmitry Kurochkin removed the cancelled state for pipelining, as we agreed  that it is bad anyway. Starting now, removing a handle that is in used in a 
diff --git a/RELEASE-NOTES b/RELEASE-NOTES index 527059e..ae8b86b 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES 
@@ -60,6 +60,7 @@  o curl_multi_fdset() failed to return socket while doing CONNECT over proxy  o curl_multi_remove_handle() on a handle that is in used for a pipeline now  break that pipeline + o CURLOPT_COOKIELIST memory leaks    This release includes the following known bugs:   
diff --git a/lib/cookie.c b/lib/cookie.c index 4fb477c..3e6c8a1 100644 --- a/lib/cookie.c +++ b/lib/cookie.c 
@@ -5,7 +5,7 @@  * | (__| |_| | _ <| |___  * \___|\___/|_| \_\_____|  * - * Copyright (C) 1998 - 2007, Daniel Stenberg, <daniel@haxx.se>, et al. + * Copyright (C) 1998 - 2008, Daniel Stenberg, <daniel@haxx.se>, et al.  *  * This software is licensed as described in the file COPYING, which  * you should have received as part of this distribution. The terms @@ -812,7 +812,7 @@  void Curl_cookie_clearall(struct CookieInfo *cookies)  {  if(cookies) { - Curl_cookie_freelist(cookies->cookies); + Curl_cookie_freelist(cookies->cookies, TRUE);  cookies->cookies = NULL;  cookies->numcookies = 0;  } @@ -824,16 +824,22 @@  *  * Free a list of cookies previously returned by Curl_cookie_getlist();  * + * The 'cookiestoo' argument tells this function whether to just free the + * list or actually also free all cookies within the list as well. + *  ****************************************************************************/   -void Curl_cookie_freelist(struct Cookie *co) +void Curl_cookie_freelist(struct Cookie *co, bool cookiestoo)  {  struct Cookie *next;  if(co) {  while(co) {  next = co->next; - free(co); /* we only free the struct since the "members" are all - just copied! */ + if(cookiestoo) + freecookie(co); + else + free(co); /* we only free the struct since the "members" are all just + pointed out in the main cookie list! */  co = next;  }  } @@ -867,7 +873,7 @@  else  prev->next = next;   - free(curr); + freecookie(curr);  cookies->numcookies--;  }  else 
diff --git a/lib/cookie.h b/lib/cookie.h index ea4c836..7fbc72e 100644 --- a/lib/cookie.h +++ b/lib/cookie.h 
@@ -7,7 +7,7 @@  * | (__| |_| | _ <| |___  * \___|\___/|_| \_\_____|  * - * Copyright (C) 1998 - 2006, Daniel Stenberg, <daniel@haxx.se>, et al. + * Copyright (C) 1998 - 2008, Daniel Stenberg, <daniel@haxx.se>, et al.  *  * This software is licensed as described in the file COPYING, which  * you should have received as part of this distribution. The terms @@ -91,7 +91,7 @@  const char *, struct CookieInfo *, bool);  struct Cookie *Curl_cookie_getlist(struct CookieInfo *, const char *,  const char *, bool); -void Curl_cookie_freelist(struct Cookie *); +void Curl_cookie_freelist(struct Cookie *cookies, bool cookiestoo);  void Curl_cookie_clearall(struct CookieInfo *cookies);  void Curl_cookie_clearsess(struct CookieInfo *cookies);  void Curl_cookie_cleanup(struct CookieInfo *); 
diff --git a/lib/http.c b/lib/http.c index 1dcdc0f..89f5c76 100644 --- a/lib/http.c +++ b/lib/http.c 
@@ -2374,7 +2374,7 @@  }  co = co->next; /* next cookie please */  } - Curl_cookie_freelist(store); /* free the cookie list */ + Curl_cookie_freelist(store, FALSE); /* free the cookie list */  }  if(addcookies && (CURLE_OK == result)) {  if(!count)